Several years ago, a new Universal Serial Bus (USB) specification was created to provide a standardized interconnect for computer peripheral devices and to facilitate the connection of those devices to the computer. There are several versions of the USB, the latest being the Universal Serial Bus Revision 2.0 Specification. Applicant incorporates all USB specifications, revisions and errata sheets herein by reference. The USB allows computer peripheral devices to connect to a computer through a standardized interface, thus replacing multiple, different cable designs with a single cable design and standard electrical specification. USB buses are differentially driven and thus comprise two data lines, D+ and D−. They further comprise a third line from which the peripheral devices can draw power. The USB design permits peripheral devices to be connected and disconnected from the bus while the computer is powered up and operational. Even further, the USB specification provides a protocol by which a peripheral device can be connected to the USB and detected by the computer, which can then automatically run a configuration process for the device. More particularly, a USB peripheral device may be line powered, i.e., it receives its power via the USB bus.
The USB specification also provides that a USB bus and the devices connected to the bus can be placed in a suspend state if certain events occur. For instance, if there is no activity on the USB bus for more than 30 milliseconds, the peripheral device is placed in suspend state in order to minimize power consumption. In accordance with the USB specification, a peripheral device connected to a USB bus may draw no more than 500 microamps from the USB bus when in suspend state.
Commonly, a computer peripheral device will have configuration information that needs to be maintained for when the device wakes up again from suspend mode. Various techniques have been developed in the prior art to maintain configuration data while a peripheral device is in suspend mode.
In accordance with at least one technique, the data that must be maintained is written into a non-volatile memory before the device enters suspend mode. When the device awakens from suspend mode, the data is written back out from the non-volatile memory into the appropriate registers or other locations.
In accordance with another technique, the electronic components of the peripheral device are maintained in a powered up state, but the internal clocks are shut down. This latter technique is disadvantageous because the memory modules (static RAM) inside the peripheral device tend to have high leakage currents, especially high-speed devices. Accordingly, they draw a significant amount of current in order to maintain their states.
Accordingly, it is an object of the present invention to provide an improved method and apparatus for placing a peripheral device in suspend state with minimal current draw while maintaining its pre-suspend, configuration data.